/// <summary>
// CodeFx - A .NET framework
// Laurent Morisseau
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// Laurent Morisseau
/// </summary>
/// <author><a href="mailto:laurent.morisseau@gmail.com">Laurent Morisseau</a></author>

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace CodeFx.Web
{
    public class DALException : ApplicationException
    {
        private DALBase dataObject;

        private string command;
	

        /// <summary>
        /// Default constructor
        /// </summary>
        public DALException()
            : base()
        {
        }

        public DALException(Exception exception)
            :
            base(string.Empty, exception)
        {
        }

        public DALException(string message, Exception exception)
            :
            base(message, exception)
        {
        }
        
        public DALException(string command, DALBase dataObject, Exception exception):base(string.Empty, exception)
        {
            this.command = command;
            this.dataObject = dataObject;
        }

        public override sealed string Message
        {
            get
            {
                StringBuilder sb = new StringBuilder(base.Message);

                if (HttpContext.Current.Profile != null)
                {
                    sb.AppendLine(Environment.NewLine);
                    sb.AppendLine(string.Format("Profile :{0}", HttpContext.Current.Profile.UserName));
                }

                if (this.dataObject != null)
                {
                    sb.AppendLine(Environment.NewLine);
                    sb.AppendLine(string.Format("DataObject: {0}", dataObject.ToString()));
                }

                if (!string.IsNullOrEmpty(this.command))
                {
                    sb.AppendLine(Environment.NewLine);
                    sb.AppendLine(string.Format("Command: {0}", command));
                }
                return sb.ToString();
            }
        }
 

 

    }
}
